﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using GigaSite.Web.Areas.ControlPanel.Helpers;
using GigaSite.Web.Areas.ControlPanel.Models;

namespace GigaSite.Web.Areas.ControlPanel.Controllers
{
    /// <summary>
    /// Абстрактный контроллер панели управления
    /// </summary>
    public  abstract class BaseRootController : Controller
    {
        /// <summary>
        /// Возвращает сообщение о том что Json операция выполнена успешно, параллельно возвращая какие либо данные
        /// </summary>
        /// <param name="data">Данные для передачи на клиент, опционально</param>
        /// <returns>Json</returns>
        protected JsonNetResult JsonSuccess(object data = null)
        {
            return new JsonNetResult()
                       {
                           ContentEncoding = Encoding.UTF8,
                           ContentType = "application/json",
                           Data = new
                                      {
                                          result = JsonHelper.SuccessResult(),
                                          data = data
                                      }
                       };
        }

        /// <summary>
        /// Возвращает сообщение о том что Json операция провалилась
        /// </summary>
        /// <param name="e">Исключение, которое породило ошибку</param>
        /// <returns></returns>
        protected JsonNetResult JsonErrors(Exception e)
        {
            Response.StatusCode = 500;
            return new JsonNetResult()
                       {
                           ContentEncoding = Encoding.UTF8,
                           ContentType = "application/json",
                           Data = new
                                      {
                                          result = JsonHelper.ErrorsResult(),
                                          message = e.Message
                                      }
                       };
        }

        /// <summary>
        /// Возвращает сообщение о том что Json операция провалилась
        /// </summary>
        /// <param name="message">Сообщение об ошибке</param>
        /// <returns></returns>
        protected JsonNetResult JsonErrors(string message)
        {
            Response.StatusCode = 500;
            return new JsonNetResult()
                       {
                           ContentEncoding = Encoding.UTF8,
                           ContentType = "application/json",
                           Data = new
                                      {
                                          result = JsonHelper.ErrorsResult(),
                                          message = message
                                      }
                       };
        }
    }
}
